#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QDebug>
#include <QFile>
#include <QThread>

extern "C" {

// 设备
#include <libavdevice/avdevice.h>
// 格式
#include <libavformat/avformat.h>
// 工具(比如错误处理)
#include <libavutil/avutil.h>

}

#ifdef Q_OS_WIN

// 格式名称
#define FMT_NAME "dshow"
// 设备名称
#define DEVICE_NAME "audio=线路输入 (3- 魅声T800)"
// PCM文件名
#define FILENAME "F:/out.pcm"

#else

// 格式名称
#define FMT_NAME "avfoundation"
// 设备名称
#define DEVICE_NAME ":0"
// PCM文件名
#define FILENAME "/User/os/Desktop/out.pcm"

#endif

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    qDebug() << "MainWindow" << QThread::currentThread();

}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_audioButton_clicked() {

    if (!_audioThread) { // 点击了“开始录视频”
        // 开启线程
        _audioThread = new AudioThread(this);
        _audioThread->start();

        connect(_audioThread, &AudioThread::finished, [this]() { // 线程结束
            _audioThread = nullptr;
            ui->audioButton->setText("开始录视频");
        });

        ui->audioButton->setText("结束录视频");
    } else {
        _audioThread->requestInterruption();
        _audioThread = nullptr;

        ui->audioButton->setText("开始录视频");
    }

}
